#include <iostream>
using namespace std;

// 类模版与继承
template<class T>
class Base
{
    T m;
    
};

class Son:public Base<int>   //必须知道父类中的T类型，才能继承给子类
{
public:
};

void test1()
{
    Son s1;
}

//如果想灵活指定父类中T类型，子类也需要变类模版
template<class T1,class T>
class Son2:public Base<T>
{
public:
    T1 obj;
    Son2()
    {
        cout << "T1的类型为：" << typeid(T1).name() << endl;
        cout << "T的类型为：" << typeid(T).name() << endl;
    }
};
void test2()
{
    Son2<string, int> s2;
}

int main()
{
    test1();
    cout << "----------------" << endl;
    test2();
    
    return 0;
}